package com.weight.common.generate.temple;

import java.util.List;
import java.util.Map;

import com.weight.common.generate.GenerateImp;
import com.weight.common.generate.base.ResourceFile;


/**
* 
*  
*/
public class MapperSQLResourceFile extends ResourceFile {
	private static final String FILE_NAME = ".sql";
	
//	protected String fileDir;// 文件路径
//	protected String fileName;//文件名
//	protected String resource;//文件內容
	
	public MapperSQLResourceFile(String filePath,String packageName,String model,List<GenerateImp> successList2,String tableName,String tableCnName) {
		
		super(filePath,new StringBuilder().append(packageName).append(FILE_NAME).toString());
		
		StringBuilder  resourceFile =new StringBuilder();
		//1.删表建表
		resourceFile.append("DROP TABLE IF EXISTS `cs`.`").append(tableName).append("` ;\n");
		resourceFile.append("\n");
		resourceFile.append("CREATE TABLE IF NOT EXISTS `cs`.`").append(tableName).append("` (\n");
		//常量表跟关系表自动生成ID
		if(tableName.endsWith("_ral")||tableName.endsWith("_norm")) {
			resourceFile.append("\t`").append(tableName).append("_id`\tINT(8)\tNOT\tNULL\tAUTO_INCREMENT\tCOMMENT\t'")
			.append(tableCnName).append("Id',\n");
		}//userid int(4) primary key not null auto_increment,
		//循环生成字段
		for(int i=0;i<successList2.size();i++) {			
			if(successList2.get(i).getIndex()!=null&&successList2.get(i).getIndex().equalsIgnoreCase("primary")) {
				resourceFile.append("\t`").append(successList2.get(i).getENname().toLowerCase().trim()).append("`\t")
				.append(successList2.get(i).getType().toUpperCase()).append("(")
				.append(successList2.get(i).getStrSize()).append(")")
				.append("\tNOT\tNULL\tCOMMENT\t'").append(successList2.get(i).getCNname())
				.append("',\n");
			}else if(successList2.get(i).getStrSize()!=null) {
				resourceFile.append("\t`").append(successList2.get(i).getENname().toLowerCase().trim()).append("`\t")
				.append(successList2.get(i).getType().toUpperCase()).append("(")
				.append(successList2.get(i).getStrSize()).append(")")
				.append("\tNULL\tCOMMENT\t'").append(successList2.get(i).getCNname())
				.append("',\n");
			}else {
				try {
					resourceFile.append("\t`").append(successList2.get(i).getENname().toLowerCase().trim()).append("`\t")
					.append(successList2.get(i).getType().toUpperCase()).append("\tNULL\tCOMMENT\t'").append(successList2.get(i).getCNname())
					.append("',\n");
				} catch (Exception e) {
					System.out.println(e.getMessage());
					System.out.println(successList2.get(i));
					
				}
			}
		}
		
		//添加索引键
		int kk=0;
		//信息表添加固定字段
		if(tableName.endsWith("_info")||tableName.endsWith("_log")) {
			resourceFile.append("\t`is_del`\tTINYINT\tUNSIGNED\tNOT\tNULL\tDEFAULT\t'0'\tCOMMENT\t'是否删除',\n");
			resourceFile.append("\t`create_time`\tTIMESTAMP\tNOT\tNULL\tDEFAULT\tCURRENT_TIMESTAMP\tCOMMENT\t'创建时间',\n");
			resourceFile.append("\t`update_time`\tTIMESTAMP\tNOT\tNULL\tDEFAULT\tCURRENT_TIMESTAMP\tON\tUPDATE\tCURRENT_TIMESTAMP\tCOMMENT\t'修改时间',\n");
			resourceFile.append("\t`create_by`\tVARCHAR(32)\tNOT\tNULL\tCOMMENT\t'创建人',\n");
			resourceFile.append("\t`update_by`\tVARCHAR(32)\tNOT\tNULL\tCOMMENT\t'修改人',\n");
			resourceFile.append("\t`standbyfield1`\tVARCHAR(512)\tNULL\tDEFAULT\t'0'\tCOMMENT\t'备用字段1',\n");
			resourceFile.append("\t`standbyfield2`\tVARCHAR(512)\tNULL\tDEFAULT\t'0'\tCOMMENT\t'备用字段2',\n");
			resourceFile.append("\t`standbyfield3`\tVARCHAR(512)\tNULL\tDEFAULT\t'0'\tCOMMENT\t'备用字段3',\n");
		}else {//常量表关系表
//		if(tableName.endsWith("_ral")||tableName.endsWith("_norm")) {
			resourceFile.append("\tPRIMARY KEY (`").append(tableName).append("_id`)");
			kk++;
		}
		
		for(int i=0;i<successList2.size();i++) {
			if(successList2.get(i).getIndex()!=null) {
				if(successList2.get(i).getIndex().equalsIgnoreCase("primary")) {
					if(kk>0) {
						resourceFile.append(",\n");
					}
					resourceFile.append("\tPRIMARY KEY (`").append(successList2.get(i).getENname().toLowerCase().trim()).append("`)");
					kk++;
				}else if(successList2.get(i).getIndex().equalsIgnoreCase("index")) {
					if(kk>0) {
						resourceFile.append(",\n");
					}
					resourceFile.append("\tKEY `idx_").append(successList2.get(i).getENname().toLowerCase().trim()).append("` (`")
					.append(successList2.get(i).getENname().toLowerCase().trim()).append("`)");
					kk++;
				}else if(successList2.get(i).getIndex().equalsIgnoreCase("UNIQUE")) {
					if(kk>0) {
						resourceFile.append(",\n");
					}
					resourceFile.append("\tUNIQUE KEY `uk_").append(successList2.get(i).getENname().toLowerCase().trim()).append("` (`")
					.append(successList2.get(i).getENname().toLowerCase().trim()).append("`)");
					kk++;
				}
				
			}			
		}
		
		resourceFile.append("\n)COMMENT = '").append(tableCnName).append("';\n");
		resourceFile.append("\n");
		String resource = resourceFile.toString();
		init(resource);
	}
}
